from django.http import HttpResponse
import json
import requests
from bs4 import BeautifulSoup
import re

#返回结果格式
def resultData():
    data = {
        "websiteType" : 0,
        "titleName":"",
        "titleHref": "",
        "source":"",
        "label":"",
        "volume":"",
        "summary":"",
        "detailId":'',
        "publishTime" :"",
        "category" : "",
        "quote" :"",
        "abstract": "",
        "doi": "",
        "downLoad": "",
        "keyword": [],
        "author": [],

    }
    return data

def formData(response):
    allData = []
    # 获取sid并且更新返回
    soup = BeautifulSoup(response.text, "html5lib")

    lis = soup.select(".taxarea_contentitem")

    for li in lis:
        tempData = resultData()
        try:
            tempData["titleName"] = li.select(".taxareacon_b .resultTitle")[0].text.strip()
        except:
            pass
        try:
            tempData["titleHref"] = 'http://taav3.wkinfo.com.cn'+li.select(".taxareacon_b .resultTitle")[0]["href"]
        except:
            pass
        try:
            tempData["summary"] = li.select(".blue")[0].text.strip();
        except:
            pass
        allData.append(tempData)

    return allData

def getData(keyword):

    headers = {
        'Connection': 'keep-alive',
        'Pragma': 'no-cache',
        'Cache-Control': 'no-cache',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36',
        'Accept': 'image/webp,image/apng,image/*,*/*;q=0.8',
        'Referer': 'http://hr.wkinfo.com.cn/search/process?sp.term=%E5%A9%9A%E5%A7%BB%E6%B3%95&mode=simple&collection=legislation&sp.pageNo=&sp.order=score&reserved_query=&sp.pageSize=5&search_form_breadcrumbs=&search_form_old_breadcrumbs=&nav_channel=&hiddenTeaser=&scope=&viewType=&navSelected=legislation&searchInResult=false&IfSubmit=true&isAcc=&firstA=&deleteTerm=&searchReturn=&searchOptions=&isToList=&legislationSummary=&advancedSearchHasBody=&funtype=&jobarea=&organ=&penalty=&typeofcase=&groupingField=levelEffect&termField=title&accuracy=accuracy',
        'Accept-Encoding': 'gzip, deflate',
        'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
        'Origin': 'http://hr.wkinfo.com.cn',
        'Content-Type': 'application/x-www-form-urlencoded',
        'X-Requested-With': 'XMLHttpRequest',
        'Intervention': '<https://www.chromestatus.com/feature/5718547946799104>; level="warning"',
    }

    params = (
        ('sp.term', keyword),
        ('mode', 'simple'),
        ('collection', 'legislation'),
        ('sp.pageNo', ''),
        ('sp.order', 'score'),
        ('reserved_query', ''),
        ('sp.pageSize', '5'),
        ('search_form_breadcrumbs', ''),
        ('search_form_old_breadcrumbs', ''),
        ('nav_channel', ''),
        ('hiddenTeaser', ''),
        ('scope', ''),
        ('viewType', ''),
        ('navSelected', 'legislation'),
        ('searchInResult', 'false'),
        ('IfSubmit', 'true'),
        ('isAcc', ''),
        ('firstA', ''),
        ('deleteTerm', ''),
        ('searchReturn', ''),
        ('searchOptions', ''),
        ('isToList', ''),
        ('legislationSummary', ''),
        ('advancedSearchHasBody', ''),
        ('funtype', ''),
        ('jobarea', ''),
        ('organ', ''),
        ('penalty', ''),
        ('typeofcase', ''),
        ('groupingField', 'levelEffect'),
        ('termField', 'title'),
        ('accuracy', 'accuracy'),
    )

    data = [
        ('showCount', '10'),
        ('showCount', '10'),
        ('navigatorName', 'topicClassification'),
        ('navigatorName', 'jurisdiction'),
    ]

    response = requests.post('http://hr.wkinfo.com.cn/search/process', headers=headers, params=params,data=data)

    allData = formData(response)

    return allData


def index(request):

    data = json.loads(request.POST.get('data', '1'))

    allData= getData(data["values"][0])

    return HttpResponse(json.dumps({
        "collection": allData,
        "allNum": 0
    }), content_type="application/json")